Routing এবং URL Mapping হলো ASP.Net এ HTTP রিকোয়েস্টকে সঠিক কন্ট্রোলার বা অ্যাকশন এর সাথে সংযুক্ত করার প্রক্রিয়া। এটি একটি গুরুত্বপূর্ণ অংশ যা অ্যাপ্লিকেশন পরিচালনার জন্য উপযুক্ত রিকোয়েস্ট প্রক্রিয়াকরণ নিশ্চিত করে।
১. Routing কী?
Routing হলো একটি কৌশল যা HTTP রিকোয়েস্ট URL এর ভিত্তিতে সঠিক কন্ট্রোলার এবং অ্যাকশন নির্বাচন করতে সাহায্য করে। ASP.Net MVC এবং ASP.Net Core এ, রাউটিং একটি URL pattern (যেমন /home/index) ব্যবহার করে কন্ট্রোলারের নির্দিষ্ট অ্যাকশনে রিকোয়েস্টটি পাঠায়।
ASP.Net রাউটিং সিস্টেম, URL এবং Controller এর মধ্যে সম্পর্ক স্থাপন করে, যাতে যে রিকোয়েস্ট পাঠানো হচ্ছে সেটি সঠিকভাবে প্রক্রিয়া করা হয়।
২. ASP.Net MVC রাউটিং
ASP.Net MVC এ রাউটিংকে Route Table এর মাধ্যমে কনফিগার করা হয়। প্রাথমিকভাবে, RouteConfig.cs ফাইলের মধ্যে রাউটিং কনফিগারেশন করা হয়।
রাউটিং কনফিগারেশন
- RouteConfig.cs ফাইলটি App_Start ফোল্ডারে থাকে এবং এখানে রাউটিং টেবিল তৈরি করা হয়।
- রাউটিং টেবিলের মধ্যে আপনি URL pattern এবং controller-action সম্পর্ক স্থাপন করতে পারেন।
RouteConfig.cs ফাইলের উদাহরণ:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Default route configuration
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
রাউটিং কনফিগারেশন ব্যাখ্যা:
- name: রাউটের নাম।
- url: URL প্যাটার্ন যা কন্ট্রোলার, অ্যাকশন এবং প্যারামিটার নির্ধারণ করে।
- defaults: ডিফল্ট ভ্যালু, যেমন ডিফল্ট কন্ট্রোলার এবং অ্যাকশন।
UrlParameter.Optional: প্যারামিটার ঐচ্ছিক।
এখানে, {controller}/{action}/{id} হলো URL pattern, যার মাধ্যমে রিকোয়েস্ট কন্ট্রোলার এবং অ্যাকশন এর সাথে ম্যাপ হবে।
৩. ASP.Net Core রাউটিং
ASP.Net Core তে রাউটিং কনফিগারেশনটা একটু ভিন্ন। এখানে Startup.cs ফাইলে রাউটিং কনফিগার করা হয় এবং Middleware ব্যবহার করে রিকোয়েস্ট হ্যান্ডলিং করা হয়।
রাউটিং কনফিগারেশন (Startup.cs)
ASP.Net Core তে রাউটিং কনফিগার করতে, প্রথমে ConfigureServices মেথডে সার্ভিস অ্যাড করতে হয় এবং পরে Configure মেথডে রাউটিং মডিউল ব্যবহার করতে হয়।
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews(); // MVC এর জন্য সার্ভিস অ্যাড
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseRouting(); // রাউটিং মধ্য়স্থলে যুক্ত করা
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
রাউটিং কনফিগারেশন ব্যাখ্যা:
- UseRouting(): রাউটিং সিস্টেম অ্যাকটিভেট করে।
- MapControllerRoute(): URL প্যাটার্ন এবং কন্ট্রোলার-ম্যাপিং নির্ধারণ করে।
- pattern:
{controller=Home}/{action=Index}/{id?}হলো রাউটিং প্যাটার্ন, যেখানেcontroller,actionএবংidমান ম্যাপ হয়।
৪. URL Mapping কী?
URL Mapping হলো একটি কৌশল যা URL প্যাটার্নকে কোডের নির্দিষ্ট অংশ (যেমন কন্ট্রোলার এবং অ্যাকশন) এর সাথে সম্পর্কিত করে। এটি রাউটিংয়ের একটি অংশ এবং URL ম্যানিপুলেশন সিস্টেমকে সহজ করে।
URL Mapping এর উদাহরণ:
- HomeController এর Index অ্যাকশনকে এই URL এর সাথে সম্পর্কিত করা:
- URL:
/home/index - কন্ট্রোলার:
HomeController - অ্যাকশন:
Index
- URL:
- ProductController এর Details অ্যাকশনকে এই URL এর সাথে সম্পর্কিত করা:
- URL:
/product/details/5 - কন্ট্রোলার:
ProductController - অ্যাকশন:
Details - প্যারামিটার:
5
- URL:
URL Mapping-এর ফিচার:
- URL Mapping ডাইনামিক প্যারামিটারও সমর্থন করে, যেমন:
{controller}/{action}/{id?}, যেখানেidঐচ্ছিক। - আপনি চাইলে রাউটিং প্যাটার্নে URL এর অংশকে কাস্টমাইজ করতে পারেন যেমন
{category}/{id}।
৫. Route Constraints
ASP.Net এ Route Constraints ব্যবহার করে আপনি URL প্যারামিটারগুলোর জন্য নির্দিষ্ট শর্ত আরোপ করতে পারেন। এটি রাউটিং সিস্টেমে আরও সুনির্দিষ্ট নিয়ন্ত্রণ প্রদান করে।
উদাহরণ:
routes.MapRoute(
name: "ProductDetails",
url: "product/{id}",
defaults: new { controller = "Product", action = "Details" },
constraints: new { id = @"\d+" } // এখানে id শুধুমাত্র ডিজিট হতে পারে
);
এখানে constraints ব্যবহার করে id প্যারামিটার শুধুমাত্র ডিজিট হতে হবে (যেমন product/123 ঠিক থাকবে, কিন্তু product/abc হবে না)।
৬. Area Routing
ASP.Net MVC বা Core এ আপনি Areas ব্যবহার করে বড় অ্যাপ্লিকেশনগুলো মডুলার করে সাজাতে পারেন। এর মাধ্যমে একটি অ্যাপ্লিকেশনের ভিন্ন ভিন্ন সেকশন বা মডিউলকে আলাদা রাউটিং প্যাটার্নে ভাগ করা যায়।
Area Routing উদাহরণ:
public class AreaRegistration : AreaRegistration
{
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Area_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional }
);
}
}
এখানে Admin এর জন্য আলাদা রাউটিং তৈরি করা হয়েছে।
সারাংশ
- Routing এবং URL Mapping ASP.Net অ্যাপ্লিকেশনের জন্য গুরুত্বপূর্ণ, কারণ এটি কন্ট্রোলার, অ্যাকশন এবং ইউআরএল প্যারামিটারগুলির মধ্যে সম্পর্ক স্থাপন করে।
- ASP.Net Core তে রাউটিং আরও সুবিধাজনক এবং কাস্টমাইজযোগ্য, যেখানে Middleware এবং Endpoint Routing ব্যবহৃত হয়।
- Route Constraints এবং Area Routing এর মাধ্যমে আরও সুনির্দিষ্ট এবং মডুলার রাউটিং সেটআপ করা যায়।
Read more